home *** CD-ROM | disk | FTP | other *** search
- //: C15:Wind2.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Inheritance & upcasting
- #include <iostream>
- using namespace std;
- enum note { middleC, Csharp, Cflat }; // Etc.
-
- class Instrument {
- public:
- void play(note) const {
- cout << "Instrument::play" << endl;
- }
- };
-
- // Wind objects are Instruments
- // because they have the same interface:
- class Wind : public Instrument {
- public:
- // Redefine interface function:
- void play(note) const {
- cout << "Wind::play" << endl;
- }
- };
-
- void tune(Instrument& i) {
- // ...
- i.play(middleC);
- }
-
- int main() {
- Wind flute;
- tune(flute); // Upcasting
- } ///:~
-